/*
 * FSWUniCEUB - 2008
 * 
 * Este arquivo é de propriedade da Fábrica de Software do UniCEUB
 * 
 * Para mais informações entre em contato com a coordenação do
 * curso de Ciência da Computação da instituição.
 */
package br.uniceub.fsw.talentos.facade;

import br.uniceub.fsw.arquitetura.persistencia.transacao.Transacao;
import br.uniceub.fsw.arquitetura.servico.exception.NegocioException;
import br.uniceub.fsw.talentos.dao.TalentoDAO;
import br.uniceub.fsw.talentos.dao.HabilidadeDAO;
import br.uniceub.fsw.talentos.dao.HabilidadePerfilDAO;
import br.uniceub.fsw.talentos.dao.TipoHabilidadeDAO;
import br.uniceub.fsw.talentos.dao.GrupoTrabalhoDAO;
import br.uniceub.fsw.talentos.dao.PerfilDAO;
import br.uniceub.fsw.talentos.vo.TalentoVO;
import br.uniceub.fsw.talentos.vo.HabilidadeVO;
import br.uniceub.fsw.talentos.vo.HabilidadePerfilVO;
import br.uniceub.fsw.talentos.vo.TipoHabilidadeVO;
import br.uniceub.fsw.talentos.vo.GrupoTrabalhoVO;
import br.uniceub.fsw.talentos.vo.PerfilVO;
import br.uniceub.fsw.talentos.bo.TalentoBO;
import br.uniceub.fsw.util.TabelaHtml;
import java.util.ArrayList;
import java.util.List;
import java.io.*;
import java.text.ParseException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.DateFormat;
import java.util.Date;

/**
 * Facade da entidade Talento.
 * 
 * @author Bruno Schifer Bernardi
 * * @author Ana Carolina Percon Peixoto - 2009
 * * @author Leonardo Angelos da Costa - 2009
 */
public class TalentoFacade {

    /**
     * Mensagem de retorno do sistema.
     */
    private String message;
    /**
     * Value object do talento.
     */
    private TalentoVO talento;
    /**
     * Objeto de acesso aos dados de talento.
     */
    private TalentoDAO talentoDao;
    /**
     * Objeto da camada de negócio de talento.
     */
    private TalentoBO talentoBo;
    /**
     * Value object do tipo de habilidade.
     */
    private TipoHabilidadeVO tipoHabilidade;
    /**
     * Value object de habilidade.
     */
    private HabilidadeVO habilidade;
    /**
     * Value object de perfil.
     */
    private PerfilVO perfil;
    /**
     * Value object de grupoTrabalho.
     */
    private GrupoTrabalhoVO grupoTrabalho;

    /**
     * Construtor da classe.
     */
    public TalentoFacade() {
        this.talentoDao = new TalentoDAO();
        this.talentoBo = new TalentoBO();
    }

    /**
     * Getter da mensagem de retorno.
     * 
     * @return Mensagem de retorno.
     */
    public String getMessage() {
        String retorno = null;
        if (this.message == null || this.message.equals("")) {
            retorno = "&nbsp";
        } else {
            retorno = this.message;
        }
        return retorno;
    }

    /**
     * Setter da mensagem de retorno.
     * 
     * @param message Mensagem de retorno.
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * Responsável por executar a operação selecionada pelo usuário.
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    public void operacao(HttpServletRequest req, HttpServletResponse resp) {
        String oper = req.getParameter("operacao");

        if (oper != null) {

            if (oper.equals("consultar")) {
                this.consultar(req, resp);
            }
            if (oper.equals("incluir")) {
                this.incluir(req, resp);
            }
            
            if (oper.equals("alterar")) {
                this.alterar(req, resp);
            }

            if (oper.equals("excluir")) {
                this.excluir(req, resp);
            }
            if (oper.equals("confirmar")) {
                this.confirmar(req, resp);
                }
            if (oper.equals("recarregar")) {
                this.recarregar(req, resp);
            }
            if (oper.equals("carregar")) {
                this.carregar(req, resp);
            }
            if (oper.equals("detalhar")) {
                this.recarregar(req, resp);
            }
        }
    }

    /**
     * Retorna o talento.
     * 
     * @return Objeto talento.
     */
    public TalentoVO getTalento() {
        return this.talento;
    }

    /**
     * Seta o talento.
     * 
     * @param talento Objeto talento.
     */
    public void setTalento(TalentoVO talento) {
        this.talento = talento;
    }

    public GrupoTrabalhoVO getGrupoTrabalho() {
        return grupoTrabalho;
    }

    public void setGrupoTrabalho(GrupoTrabalhoVO grupoTrabalho) {
        this.grupoTrabalho = grupoTrabalho;
    }

    public HabilidadeVO getHabilidade() {
        return habilidade;
    }

    public void setHabilidade(HabilidadeVO habilidade) {
        this.habilidade = habilidade;
    }

    public PerfilVO getPerfil() {
        return perfil;
    }

    public void setPerfil(PerfilVO perfil) {
        this.perfil = perfil;
    }

    public TipoHabilidadeVO getTipoHabilidade() {
        return tipoHabilidade;
    }

    public void setTipoHabilidade(TipoHabilidadeVO tipoHabilidade) {
        this.tipoHabilidade = tipoHabilidade;
    }

    /**
     * Carregar um talento.
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */

    public void consultar(HttpServletRequest req, HttpServletResponse resp) {
        String idTalentoTmp = req.getParameter("idTalento");

        Integer idTalento = null;

        if(idTalentoTmp == null || idTalentoTmp.equals("")) {
            return;
        } else {
            idTalento = Integer.parseInt(idTalentoTmp);
        }

        this.talento = talentoDao.consultarPorId(idTalento);
    }

    public void incluir(HttpServletRequest req, HttpServletResponse resp) {
        String noTalento = req.getParameter("noTalento");
        String cdGrupoTrabalho = req.getParameter("cdGrupoTrabalho");
        String nrCPF = req.getParameter("nrCpf");
        String mtRegistroUniceub = req.getParameter("mtRegistroUniceub");
        String sgSexo = req.getParameter("sgSexo");
        String tlPrincipal = req.getParameter("tlPrincipal");
        String tlSecundario = req.getParameter("tlSecundario");
        String edTalento = req.getParameter("edTalento");
        String noCidade = req.getParameter("noCidade");
        String sgUF = req.getParameter("sgUF");
        String nrCEP = req.getParameter("nrCEP");
        String dtNascimento = req.getParameter("dtNascimento");
        String eeTalento = req.getParameter("eeTalento");


        talento = new TalentoVO();
        talento.setNoTalento(noTalento);
        talento.setCdGrupoTrabalho(cdGrupoTrabalho==null?null:cdGrupoTrabalho==""?null:Integer.parseInt(cdGrupoTrabalho));
        talento.setNrCPF(nrCPF);
        talento.setMtRegistroUniceub(mtRegistroUniceub==null?null:mtRegistroUniceub==""?null:Integer.parseInt(mtRegistroUniceub));
        talento.setSgSexo(sgSexo);//sgSexo.charAt(0));
        talento.setTlPrincipal(tlPrincipal);
        talento.setTlSecundario(tlSecundario);
        talento.setEdTalento(edTalento);
        talento.setNoCidade(noCidade);
        talento.setSgUF(sgUF);
        talento.setNrCEP(nrCEP);
        talento.setEeTalento(eeTalento);

        String mensagem = null;

        try {
            talento.setDtNascimento( validaData(dtNascimento) );
        } catch ( Exception e ) {
            mensagem = "Por favor, informe uma data válida";//pe.getMessage();
        }
        
        // Validações da BO
        try {
            talentoBo.validarVOUnico(talento);
        } catch(NegocioException ex) {
            mensagem = ex.getMessage();
        }

        if(mensagem == null || mensagem.equals("")) {
            try {
                Transacao.iniciar();

                talentoDao.inserir(talento);

                Transacao.efetivar();

                mensagem = "Talento incluído com sucesso.";
            } catch (Exception ex) {
                Transacao.desfazer();

                mensagem = "Problema na inclusão do Talento: " + ex.getMessage();

                talento = null;
            }
        } else {
            talento = null;
        }

        this.message = mensagem;
    }

    public void alterar(HttpServletRequest req, HttpServletResponse resp) {
        String idTalento = req.getParameter("idTalento");
        String noTalento = req.getParameter("noTalento");
        String cdGrupoTrabalho = req.getParameter("cdGrupoTrabalho");
        String nrCPF = req.getParameter("nrCpf");
        String mtRegistroUniceub = req.getParameter("mtRegistroUniceub");
        String sgSexo = req.getParameter("sgSexo");
        String tlPrincipal = req.getParameter("tlPrincipal");
        String tlSecundario = req.getParameter("tlSecundario");
        String edTalento = req.getParameter("edTalento");
        String noCidade = req.getParameter("noCidade");
        String sgUF = req.getParameter("sgUF");
        String nrCEP = req.getParameter("nrCEP");
        String dtNascimento = req.getParameter("dtNascimento");
        String eeTalento = req.getParameter("eeTalento");

        talento = new TalentoVO();
        talento.setIdTalento(Integer.parseInt(idTalento));
        talento.setNoTalento(noTalento);
        talento.setCdGrupoTrabalho(cdGrupoTrabalho==null?null:cdGrupoTrabalho==""?null:Integer.parseInt(cdGrupoTrabalho));
        talento.setNrCPF(nrCPF);
        talento.setMtRegistroUniceub(mtRegistroUniceub==null?null:mtRegistroUniceub==""?null:Integer.parseInt(mtRegistroUniceub));
        talento.setSgSexo(sgSexo);//sgSexo.charAt(0));
        talento.setTlPrincipal(tlPrincipal);
        talento.setTlSecundario(tlSecundario);
        talento.setEdTalento(edTalento);
        talento.setNoCidade(noCidade);
        talento.setSgUF(sgUF);
        talento.setNrCEP(nrCEP);
        talento.setEeTalento(eeTalento);

        String mensagem = null;

        try {
            talento.setDtNascimento(validaData(dtNascimento));
         } catch ( Exception e ) {
            mensagem = "";
         }

        // Validações da BO
        try {
            talentoBo.validarAlterarVOUnico(talento);
        } catch(NegocioException ex) {
            mensagem = ex.getMessage();
        }

        if(mensagem == null || mensagem.equals("")) {
            try {
                Transacao.iniciar();

                talentoDao.alterar(talento);

                Transacao.efetivar();

                mensagem = "Talento alterado com sucesso.";
            } catch (Exception ex) {
                Transacao.desfazer();

                mensagem = "Problema na alteração do Talento: " + ex.getMessage();

                talento = null;
            }
        } else {
            talento = null;
        }

        this.message = mensagem;
    }

    public void excluir(HttpServletRequest req, HttpServletResponse resp) {
        String idTalento = req.getParameter("idTalento");

        talento = new TalentoVO();
        talento.setIdTalento(Integer.parseInt(idTalento));

        String mensagem = null;

        /*
        // Validações da BO
        try {

            talentoBo.validarExclusao(talento);


        } catch(NegocioException ex) {
            mensagem = ex.getMessage();
        }
         *
         */

        if(mensagem == null || mensagem.equals("")) {
            try {
                Transacao.iniciar();

                talentoDao.excluir(talento);

                Transacao.efetivar();

                mensagem = "Talento excluído com sucesso.";
            } catch (Exception ex) {
                Transacao.desfazer();

                mensagem = "Problema na exclusão do Talento: " + ex.getMessage();
            }
        } else {
            talento = null;
        }

        this.message = mensagem;
    }

    public void confirmar(HttpServletRequest req, HttpServletResponse resp) {
        String idTalento = req.getParameter("idTalento");
        String noTalento = req.getParameter("noTalento");
        String cdGrupoTrabalho = req.getParameter("cdGrupoTrabalho");
        String nrCPF = req.getParameter("nrCpf");
        String mtRegistroUniceub = req.getParameter("mtRegistroUniceub");
        String sgSexo = req.getParameter("sgSexo");
        String tlPrincipal = req.getParameter("tlPrincipal");
        String tlSecundario = req.getParameter("tlSecundario");
        String edTalento = req.getParameter("edTalento");
        String noCidade = req.getParameter("noCidade");
        String sgUF = req.getParameter("sgUF");
        String nrCEP = req.getParameter("nrCEP");
        String dtNascimento = req.getParameter("dtNascimento");
        String eeTalento = req.getParameter("eeTalento");

        talento = new TalentoVO();
        talento.setIdTalento(Integer.parseInt(idTalento));
        talento.setNoTalento(noTalento);
        talento.setCdGrupoTrabalho(cdGrupoTrabalho==null?null:cdGrupoTrabalho==""?null:Integer.parseInt(cdGrupoTrabalho));
        talento.setNrCPF(nrCPF);
        talento.setMtRegistroUniceub(mtRegistroUniceub==null?null:mtRegistroUniceub==""?null:Integer.parseInt(mtRegistroUniceub));
        talento.setSgSexo(sgSexo);//sgSexo.charAt(0));
        talento.setTlPrincipal(tlPrincipal);
        talento.setTlSecundario(tlSecundario);
        talento.setEdTalento(edTalento);
        talento.setNoCidade(noCidade);
        talento.setSgUF(sgUF);
        talento.setNrCEP(nrCEP);
        talento.setDtNascimento(new java.util.Date(dtNascimento));/*new java.util.Date(Integer.parseInt(dtNascimento.substring(6,10)),
                Integer.parseInt(dtNascimento.substring(3,5)),
                Integer.parseInt(dtNascimento.substring(0,2))));*/
        talento.setEeTalento(eeTalento);
    }

    public TabelaHtml consultarTalento(HttpServletRequest req, HttpServletResponse resp) {
        String nome = req.getParameter("noTalento");

        if(nome != null && !nome.equals("")) {
            TabelaHtml tabela = new TabelaHtml();

            tabela.setCampoRetorno("idTalento");

            tabela.adicionarTitulo("Id");
            tabela.adicionarTamanho(0);
            tabela.adicionarTipo("Integer");
            tabela.adicionarStatus(false);

            tabela.adicionarTitulo("Nome");
            tabela.adicionarTamanho(80);
            tabela.adicionarTipo("String");
            tabela.adicionarStatus(true);

            tabela.gravarCampos();

            TalentoVO exemplo = new TalentoVO();

            exemplo.setNoTalento(nome);

            // Lista de talentos
            List<TalentoVO> talento = talentoDao.consultarPorExemplo(exemplo);

            // Adiciona os valores de cada talento nas listas de ids e nomes
            for(int i = 0; i < talento.size(); i++) {
                tabela.adicionarRegistro(converterVoParaString(talento.get(i)));
            }



             return tabela;
            }
        return null;
    }

    public void carregar(HttpServletRequest req, HttpServletResponse resp) {

        String noArquivo = req.getParameter("noArquivo");
        String mensagem = null;

        File arquivo = new File(noArquivo);

        try{

            BufferedReader in = new BufferedReader(new FileReader(arquivo));
            String s;

            s = in.readLine();
            while (s !=null){
            System.out.println(s);
            s = in.readLine();
        }
            in.close();
        }catch (FileNotFoundException e1){
            mensagem = "Problema no carregamento do arquivo.";

        }catch(IOException e2){
            e2.printStackTrace();
        }

        if (mensagem == null || mensagem.equals("")) {
            try {
                Transacao.iniciar();

                talentoDao.inserir(talento);

                Transacao.efetivar();

                mensagem = "Talento incluído com sucesso.";
            } catch (Exception ex) {
                Transacao.desfazer();

                mensagem = "Problema na inclusão do talento: " + ex.getMessage();

                talento = null;
            }
        } else {
            talento = null;
        }

        this.message = mensagem;
    }

    /**
     * Recarregar a página após alguma ação de seleção de combo.
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     */
    public void recarregar(HttpServletRequest req, HttpServletResponse resp) {
        String idTalento = req.getParameter("idTalento");
        String idGrupoTrabalho = req.getParameter("idGrupoTrabalho");
        String idPerfil = req.getParameter("idPerfil");
        String idTipoHabilidade = req.getParameter("idTipoHabilidade");
        String idHabilidade = req.getParameter("idHabilidade");

        if (idTalento != null && !idTalento.isEmpty()) {
            talento = talentoDao.consultarPorId(idTalento);
        }
        
        GrupoTrabalhoDAO grupoTrabalhoDao = new GrupoTrabalhoDAO();

        if (idGrupoTrabalho != null && !idGrupoTrabalho.isEmpty()) {
            grupoTrabalho = grupoTrabalhoDao.consultarPorId(idGrupoTrabalho);
        }
        
        PerfilDAO perfilDao = new PerfilDAO();

        if (idPerfil != null && !idPerfil.isEmpty()) {
            perfil = perfilDao.consultarPorId(idPerfil);
        }
        
        TipoHabilidadeDAO tipoHabilidadeDao = new TipoHabilidadeDAO();

        if (idTipoHabilidade != null && !idTipoHabilidade.isEmpty()) {
            tipoHabilidade = tipoHabilidadeDao.consultarPorId(idTipoHabilidade);
        }
        
        HabilidadeDAO habilidadeDao = new HabilidadeDAO();

        if (idHabilidade != null && !idHabilidade.isEmpty()) {
            habilidade = habilidadeDao.consultarPorId(idHabilidade);
        }
    }

        /**
     * Retorna uma lista de talentos a partir de parâmetros da tela
     * 
     * @param req Requisição web do tipo HTTP.
     * @param resp Resposta da requisição HTTP.
     * @return objeto tabela com as informações necessárias
     */
    public TabelaHtml consultarTalentos(HttpServletRequest req, HttpServletResponse resp) {
        String nome = req.getParameter("noTalento");
        String cdHabilidade = req.getParameter("idHabilidade");
        String cdPerfil = req.getParameter("idPerfil");
        String cdGrupoTrabalho = req.getParameter("idGrupoTrabalho");
        String matricula = req.getParameter("mtRegistroUniceub");
        String oper = req.getParameter("operacao");

        if ((nome != null && !nome.equals("") || 
                matricula != null && !matricula.equals("") ||
                cdGrupoTrabalho != null && !cdGrupoTrabalho.equals("") ||
                cdHabilidade != null && !cdHabilidade.equals("") ||
                cdPerfil != null && !cdPerfil.equals("")) &&
                oper.equals("consultar")) {
            TabelaHtml tabela = new TabelaHtml();

            tabela.setCampoRetorno("idTalento");

            tabela.adicionarTitulo("Id");
            tabela.adicionarTamanho(0);
            tabela.adicionarTipo("Integer");
            tabela.adicionarStatus(false);

            tabela.adicionarTitulo("Nome");
            tabela.adicionarTamanho(60);
            tabela.adicionarTipo("String");
            tabela.adicionarStatus(true);

            tabela.adicionarTitulo("Matrícula");
            tabela.adicionarTamanho(20);
            tabela.adicionarTipo("String");
            tabela.adicionarStatus(true);

            tabela.gravarCampos();

            TalentoVO exemplo = new TalentoVO();

            exemplo.setNoTalento(nome);
            exemplo.setCdGrupoTrabalho(cdGrupoTrabalho.equals("")?null:Integer.parseInt(cdGrupoTrabalho));
            exemplo.setMtRegistroUniceub(matricula.equals("")?null:Integer.parseInt(matricula));
            
            HabilidadeDAO habilidadeDao = new HabilidadeDAO();
            
            Integer idHabilidade = cdHabilidade==null||cdHabilidade.equals("")?null:Integer.parseInt(cdHabilidade);
            
            HabilidadeVO habilidadeParametro = habilidadeDao.consultarPorId(idHabilidade);
            
            PerfilDAO perfilDao = new PerfilDAO();
            
            Integer idPerfil = cdPerfil==null||cdPerfil.equals("")?null:Integer.parseInt(cdPerfil);

            PerfilVO perfilParametro = perfilDao.consultarPorId(idPerfil);
            
            // Lista de talentos
            List<TalentoVO> talentos = talentoDao.consultarPorExemploPorParametros(exemplo, habilidadeParametro, perfilParametro);

            // Adiciona os valores de cada talento nas listas de ids e nomes
            for (int i = 0; i < talentos.size(); i++) {
                tabela.adicionarRegistro(converterVoParaString(talentos.get(i)));
            }

            return tabela;
        }

        return null;
    }
    
    /**
     * Detalhar
     */
    public void detalhar(HttpServletRequest req, HttpServletResponse resp) {
        String cdTalento = req.getParameter("idTalento");
        
        
        this.talento = this.talentoDao.consultarPorId(cdTalento.equals("")?null:Integer.parseInt(cdTalento));
        
        
    }
    
    /**
     * Retorna uma lista de tipos de habilidade ordenada por nome
     * 
     * @return lista com as informações necessárias
     */
    public List<List> consultarGruposTrabalho() {
        List<List> lista = new ArrayList<List>();

        GrupoTrabalhoDAO grupoTrabalhoDao = new GrupoTrabalhoDAO();
        
        List<GrupoTrabalhoVO> grupo = grupoTrabalhoDao.consultarTiposOrdenadoPorNome();
        
        for(int i = 0; i < grupo.size(); i++) {
            List<String> registro = new ArrayList<String>();
            registro.add(grupo.get(i).getIdGrupoTrabalho().toString());
            registro.add(grupo.get(i).getNoGrupoTrabalho());
            
            lista.add(registro);
        }
        
        return lista;
    }
            /**
     * Retorna uma lista de tipos de habilidade ordenada por nome
     * 
     * @return lista com as informações necessárias
     */
    public List<List> consultarPerfis() {
        List<List> lista = new ArrayList<List>();

        PerfilDAO perfilDao = new PerfilDAO();
        
        List<PerfilVO> perfis = perfilDao.consultarTiposOrdenadoPorNome();
        
        for(int i = 0; i < perfis.size(); i++) {
            List<String> registro = new ArrayList<String>();
            registro.add(perfis.get(i).getIdPerfil().toString());
            registro.add(perfis.get(i).getNoPerfil());
            
            lista.add(registro);
        }
        
        return lista;
    }
    
        /**
     * Retorna uma lista de tipos de habilidade ordenada por nome
     * 
     * @return lista com as informações necessárias
     */
    public List<List> consultarTiposHabilidade() {
        List<List> lista = new ArrayList<List>();

        TipoHabilidadeDAO tipoHabilidadeDao = new TipoHabilidadeDAO();
        
        List<TipoHabilidadeVO> tipos = tipoHabilidadeDao.consultarTiposOrdenadoPorNome();
        
        for(int i = 0; i < tipos.size(); i++) {
            List<String> registro = new ArrayList<String>();
            registro.add(tipos.get(i).getIdTipoHabilidade().toString());
            registro.add(tipos.get(i).getNoTipoHabilidade());
            
            lista.add(registro);
        }
        
        return lista;
    }
    
        public List<List> consultarHabilidadesPorTipo(HttpServletRequest req, HttpServletResponse resp) {
        String idTipoHabilidade_tmp = req.getParameter("idTipoHabilidade");
        
        Integer idTipoHabilidade = (idTipoHabilidade_tmp == null || idTipoHabilidade_tmp.equals(""))?null:Integer.parseInt(idTipoHabilidade_tmp);
        
        List<List> lista = new ArrayList<List>();

        HabilidadeDAO habilidadeDao = new HabilidadeDAO();
        
        List<HabilidadeVO> habilidades = habilidadeDao.consultarHabilidadesPorTipoOrdenadoPorNome(idTipoHabilidade);
        
        for(int i = 0; i < habilidades.size(); i++) {
            List<String> registro = new ArrayList<String>();
            registro.add(habilidades.get(i).getIdHabilidade().toString());
            registro.add(habilidades.get(i).getNoHabilidade());
            
            lista.add(registro);
        }
        
        return lista;
    }

    /**
     * Transforma os campos de um VO em uma lista de Strings
     * 
     * @return lista de strings com os valores em ordem
     */
    public List<String> converterVoParaString(TalentoVO talento) {
        List<String> valores = new ArrayList<String>();

        valores.add(talento.getIdTalento().toString());
        valores.add(talento.getNoTalento());
        valores.add(talento.getMtRegistroUniceub().toString());
        valores.add(talento.getNoCidade());
        valores.add(talento.getEdTalento());
        valores.add(talento.getNrCEP());
        valores.add(talento.getNrCPF());
        valores.add(talento.getTlPrincipal());
        valores.add(talento.getTlSecundario());
        valores.add(talento.getSgSexo().toString());
        valores.add(talento.getEeTalento());
        valores.add(talento.getCdGrupoTrabalho().toString());

        return valores;
    }
    
        /**
     * Transforma os campos de um VO em uma lista de Strings
     * 
     * @return lista de strings com os valores em ordem
     */
    public List<String> converterHabilidadeVoParaString(HabilidadeVO habilidade) {
        List<String> valores = new ArrayList<String>();
        
        valores.add(habilidade.getIdHabilidade().toString());
        valores.add(habilidade.getNoHabilidade());
        
        return valores;
    }

    /**
     *
     */
    public Date validaData(String data) throws Exception {
        try {
            DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
           return df.parse(data);
        } catch ( java.text.ParseException pe) {
            throw new Exception("Por favor, informe uma data válida");//pe.getMessage();
        }
    }
}
